﻿#pragma once

#include <chrono>

namespace breaking
{
	/**
	 * @brief 计时器, 输出单位秒(s), 小数点精确到微秒(us)
	 */
	class timer
	{
	public:
		timer();
		~timer();

		/**
		 * @brief 开始计时
		 */
		void start();

		/**
		 * @brief 停止计时
		 */
		void stop();

		/**
		 * @brief 已过去时间
		 */
		double elapsed();

		/**
		 * @brief 重置计时器
		 */
		void reset();

	private:
		// 是否在运行
		bool m_is_runing;
		// 开始时间
		std::chrono::time_point<std::chrono::high_resolution_clock> m_start_time;
		// 结束时间
		std::chrono::time_point<std::chrono::high_resolution_clock> m_end_time;
	};
}